package com.color.admin.system.servie;



import com.color.admin.common.core.base.BaseService;
import com.color.admin.common.core.page.PageRequest;
import com.color.admin.common.core.page.PageResponse;
import com.color.admin.system.entity.SysMenu;
import com.color.admin.system.entity.SysRole;
import com.color.admin.system.entity.query.RoleQueryCriteria;
import com.color.admin.system.entity.vo.role.RoleSelectVo;
import com.color.admin.system.entity.vo.role.RoleVo;

import java.util.List;
import java.util.Set;

/**
 * @author HaiQiu
 */
public interface RoleService extends BaseService<SysRole,SysRole,Set<String>,
        String,SysRole, PageRequest<RoleQueryCriteria>, PageResponse<RoleVo>> {
    /**
     * 新增
     *
     * @param sysRole 角色实体
     */
    @Override
    void save(SysRole sysRole);

    /**
     * 批量删除角色
     *
     * @param ids 角色ID
     * @return 成功条数
     */
    @Override
    void delete(Set<String> ids);

    /**
     * 所有角色
     *
     * @return 所有角色
     */
    List<RoleSelectVo> roleAll(String roleName);

    /**
     * 根据ID查询角色数据
     *
     * @param roleId 角色ID
     * @return 角色
     */
    @Override
    SysRole get(String roleId);

    /**
     * 角色修改
     *
     * @param sysRole 角色实体
     */
    @Override
    void update(SysRole sysRole);

    /**
     * 根据角色ID查询所拥有的权限
     * @param roleIds 角色ID
     * @return 菜单权限
     */
    List<SysMenu> findMenusByRoleIds(Set<String> roleIds);
}
